package com.wkbb.basic.service;

import com.github.pagehelper.PageInfo;
import com.wkbb.basic.model.Employee;
import com.wkbb.basic.model.OrgStructureUser;
import com.wkbb.basic.model.Student;
import com.wkbb.common.base.BaseService;
import com.wkbb.common.dto.ResultDTO;
import com.wkbb.common.dto.basic.EmployeeInfoDto;
import com.wkbb.common.dto.basic.StudentInfoDto;

import java.util.List;
import java.util.Map;

/**
 * @author lizhichao
 * @date 2019/8/9
 * @description
 */
public interface OrgStructureUserService extends BaseService<OrgStructureUser> {

    /**
     * 增加校友
     * @param studentInfoDto
     * @param userName
     * @param structureId
     * @param orgId
     * @return
     * @throws Exception
     */
    ResultDTO addAlumnus(StudentInfoDto studentInfoDto, String userName, Long structureId, long orgId) throws Exception;

    /**
     * 批量增加校友
     * @param studentInfoDtos
     * @param userName
     * @param structureId
     * @param orgId
     * @return
     * @throws Exception
     */
    ResultDTO addAlumnusBatch(List<StudentInfoDto> studentInfoDtos, String userName, Long structureId, long orgId) throws Exception;

    /**
     * 批量导入校友
     * @param students
     * @param orgStructureUserList
     * @return
     * @throws Exception
     */
    ResultDTO importAlumnusBatch(List<Student> students, List<OrgStructureUser> orgStructureUserList) throws Exception;

    /**
     * 校友移动到学生
     * @param studentInfoDto
     * @param userName
     * @return
     * @throws Exception
     */
    ResultDTO alumnusToStudent(StudentInfoDto studentInfoDto, String userName)throws Exception;

    /**
     * 批量将校友移动到学生
     * @param studentInfoDtos
     * @param userName
     * @return
     * @throws Exception
     */
    ResultDTO alumnusToStudentBatch(List<StudentInfoDto> studentInfoDtos, String userName) throws Exception;

    /**
     * 增加退休老师
     * @param employeeInfoDto
     * @param userName
     * @param structureId
     * @param orgId
     * @return
     * @throws Exception
     */
    ResultDTO addRetiredTeacher(EmployeeInfoDto employeeInfoDto, String userName, Long structureId, long orgId) throws Exception;

    /**
     * 批量增加退休老师
     * @param employees
     * @param userName
     * @param structureId
     * @param orgId
     * @return
     * @throws Exception
     */
    ResultDTO addRetiredTeacherBatch(List<EmployeeInfoDto> employees, String userName, Long structureId, long orgId) throws Exception;

    /**
     * 批量导入退休老师
     * @param employees
     * @param orgStructureUserList
     * @return
     * @throws Exception
     */
    ResultDTO importRetiredTeacherBatch(List<Employee> employees,List<OrgStructureUser> orgStructureUserList) throws Exception;

    /**
     * 退休老师移动到老师
     * @param employeeInfoDto
     * @param userName
     * @return
     * @throws Exception
     */
    ResultDTO retiredTeacherToTeacher(EmployeeInfoDto employeeInfoDto, String userName)throws Exception;

    /**
     * 批量将退休老师移动到老师
     * @param employees
     * @param userName
     * @return
     * @throws Exception
     */
    ResultDTO retiredTeacherToTeacherBatch(List<EmployeeInfoDto> employees, String userName) throws Exception;

    /**
     * 查询校友分页信息
     * @param parms
     * @param pageNo
     * @param pageSize
     * @return
     * @throws Exception
     */
    PageInfo<StudentInfoDto> getAlumnusInfoPageList(Map<String, Object> parms, Integer pageNo, Integer pageSize) throws Exception;

    /**
     * 查询退休老师分页信息
     * @param parms
     * @param pageNo
     * @param pageSize
     * @return
     * @throws Exception
     */
    PageInfo<EmployeeInfoDto> getRetiredTeachersInfoPageList(Map<String, Object> parms, Integer pageNo, Integer pageSize) throws Exception;

    void updateByPrimaryKeySelective(Map<String, Object> params);
}